/**
 * @(#) AnniverProxy.as
 *
 * @date		2009. 03. 30.
 * @version		1.0
 * @author		Park, Juneho
 * @description	기념일조회 - Proxy
 * 				기념일 목록조회 Model Logic 
 */
 package com.skt.common_hr.main.model
 {
 	import com.skt.common_hr.common.puremvc.CommonProxy;
 	import com.skt.common_hr.main.ApplicationFacade;
 	import com.skt.common_hr.main.model.vo.AnniverVO;
 	import com.wcl.utils.DateUtil;
 	
 	import mx.collections.ArrayCollection;
 	import mx.rpc.events.FaultEvent;
 	import mx.rpc.events.ResultEvent;
 	
	public class AnniverProxy extends CommonProxy
	{
		public static const NAME:String = "AnniverProxy";
		
		public var annList:ArrayCollection;
		public var viewAnnList:ArrayCollection;


		/**
		 * 생성자
		 * 
		 * @param
		 * @return void
		 */
		public function AnniverProxy(data:Object=null)
		{
			super(NAME, data);
		}
		
		
		/**
		 * data load를 수행
		 * 		- DataLoader 를 생성하고 Import Parameter 객체를 생성, RFC를 호출
		 * 		- 기념일 LIST
		 * 
		 * @param pernr 사번
		 * @return void
		 */
		public function load(persn:String):void
		{
			var param:Object = new Object();
			param["I_PERNR"] = persn;
			
			loadData("Z_HR_0073", param, result, fault);
		}
		
		/**
		 * data load를 수행
		 * 		- DataLoader 를 생성하고 Import Parameter 객체를 생성, RFC를 호출
		 * 		- 기념일 LIST
		 * 
		 * @param pernr 사번
		 * @return void
		 */
		public function viewload(persn:String):void
		{
			var param:Object = new Object();
			param["I_PERNR"] = persn;
			
			loadData("Z_HR_0073", param, viewResult, viewFault);
		}
		
		
		
		
		
		///////////////////////////////////////////////////////////////////////////////////////////////////
		//
		//	Event Listeners
		//
		///////////////////////////////////////////////////////////////////////////////////////////////////
		
		/**
		 * 서버에서 정상적으로 리턴된 결과를 처리
		 * 		- 기념일 LIST
		 * @param
		 * @return void
		 */
		private function result(event:ResultEvent):void
		{
			if(retCode == 0) {
				annList = parsAnnList(event.result.ITAB);
				facade.sendNotification(ApplicationFacade.LOAD_ANNIVER_LIST_COMPLETE, this);
			} else {
				facade.sendNotification(ApplicationFacade.LOAD_ANNIVER_LIST_FAILED, this);
			}
		}
		
		private function fault(event:FaultEvent):void
		{
			facade.sendNotification(ApplicationFacade.LOAD_ANNIVER_LIST_FAILED, this);
		}
		
		/**
		 * 서버에서 정상적으로 리턴된 결과를 처리
		 * 		- VIEW 기념일 LIST
		 * @param
		 * @return void
		 */
		private function viewResult(event:ResultEvent):void
		{
			if(retCode == 0) {
				viewAnnList = parsViewAnnList(event.result.ITAB);
				facade.sendNotification(ApplicationFacade.LOAD_VIEW_ANNIVER_LIST_COMPLETE, this);
			} else {
				facade.sendNotification(ApplicationFacade.LOAD_VIEW_ANNIVER_LIST_FAILED, this);
			}
		}
		
		private function viewFault(event:FaultEvent):void
		{
			facade.sendNotification(ApplicationFacade.LOAD_VIEW_ANNIVER_LIST_FAILED, this);
		}
		
		
		
		
		
		
		
		///////////////////////////////////////////////////////////////////////////////////////////////////
		//
		//	Data Parsing functions
		//
		///////////////////////////////////////////////////////////////////////////////////////////////////
		
		/**
		 * 서버에서 전달된 result 객체를 분석하여 Value Object를 생성
		 * 
		 * @param
		 * @return 기념일 LIST Value Object
		 */
		 private function parsAnnList(anniverData:ArrayCollection):ArrayCollection
		 {
		 	var AnniverArrList:ArrayCollection = new ArrayCollection();
		 	var vo:AnniverVO;
		 	
		 	for(var i:int = 0; i < 4; i++) {
			 	
			 	vo = new AnniverVO();
			 	if(anniverData.length > i) {
			 		
			 		if(anniverData[i].EVTEXT == "결혼기념일") {
			 			anniverData[i].EVTEXT = "결혼";
			 		}
			 		
			 		vo.EVDAT		= DateUtil.toMMDDString(DateUtil.stringToDateTime(anniverData[i].EVDAT)); //기념일
					vo.EVTYP		= anniverData[i].EVTYP;			//기념일종류
					vo.EVTEXT		= anniverData[i].EVTEXT;		//기념일명
					vo.PERNR		= anniverData[i].PERNR;			//사원번호
					vo.ENAME		= anniverData[i].ENAME;			//사원 또는 지원자의 포맷된 이름
					
					AnniverArrList.addItem(vo);
			 	}
		 	}
		 	if(anniverData.length == 0) {
		 		vo.EVTYP = "";
		 		vo.ENAME = "기념일 없음.";
		 		AnniverArrList.addItem(vo);
		 	}
		 	return AnniverArrList;
		 }
		 
		 /**
		 * 서버에서 전달된 result 객체를 분석하여 Value Object를 생성
		 * 
		 * @param
		 * @return 기념일 LIST Value Object
		 */
		 private function parsViewAnnList(anniverData:ArrayCollection):ArrayCollection
		 {
		 	var AnniverArrList:ArrayCollection = new ArrayCollection();
		 	
		 	for each(var obj:Object in anniverData) {
		 		var vo:AnniverVO = new AnniverVO();
			 		
		 		if(obj.EVTEXT == "결혼기념일") {
		 			obj.EVTEXT = "결혼";
		 		}
		 		//vo.EVDAT		= DateUtil.toDefaultString(obj.EVDAT);		//기념일
		 		//vo.EVDAT		= obj.EVDAT;		//기념일
			 	vo.EVDAT		= DateUtil.toMMDDString(DateUtil.stringToDateTime(obj.EVDAT)); //기념일
				vo.EVTYP		= obj.EVTYP;		//기념일종류
				vo.EVTEXT		= obj.EVTEXT;		//기념일명
				vo.PERNR		= obj.PERNR;		//사원번호
				vo.ENAME		= obj.ENAME;		//사원 또는 지원자의 포맷된 이름
			
				AnniverArrList.addItem(vo);
		 	}
		 	return AnniverArrList;
		 }
		 
 	}
 }